//2928.给小朋友们分糖果I
//https://leetcode.cn/problems/distribute-candies-among-children-i
class Solution {
public:
    int distributeCandies(int n, int limit) {
        int ret = 0;
        int cnt = min(n,limit);
        //枚举第一个小孩可以分的个数 分情况讨论第二个和第三个小孩可以分多少
        for(int i = 0;i<=cnt;++i)
        {
            //当第一个小孩分到i个糖后 剩下的糖数不应该大于2*limit
            if(n-i > 2*limit) continue;
            //min(limit,n-i)计算出第二个小孩最多可以分的糖数
            //max(0,n−i−limit) 计算出第二个小孩最少可以分得的糖数
            //此时 当第一个小孩的糖数i被确定后 只需要考虑第二个和第三个小孩的糖数即可
            //所以第二个小孩可以分到糖数的可能性是最大可以分的糖数到最小可以分的糖数+1
            ret += min(limit,n-i)-max(0,n-i-limit)+1;
        }
        return ret;
    }
};